package com.vortex.cloud.sample.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.vortex.cloud.vfs.lite.base.dto.excel.AbstractTemplateDTO;
import lombok.Data;

import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 王林
 * @version 1.0
 * @date 2021-10-18 周一
 * @time 11:36
 * @description
 */
@Data
@HeadRowHeight(30)
@ContentRowHeight(20)
public class TaskUserDemoExcelDTO implements AbstractTemplateDTO {
    /**
     * id
     */
//    @ColumnWidth(20)
//    @ExcelProperty(value = "ID")
//    private String id;

    /**
     * id
     */
    @ColumnWidth(15)
    @ExcelProperty(value = "用户Id")
    private String tenantId;

    /**
     * 姓名
     */
    @ExcelProperty(value = "姓名")
    private String name;

    /**
     * 用户类型，枚举：0：管理员，1：普通用户
     */
    @ColumnWidth(30)
    @ExcelProperty(value = "用户类型")
    private String roleType;

    /**
     * 身份证号
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "密码")
    private String password;

    /**
     * 身份证号
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "身份证号")
    private String idNo;

    /**
     * 性别，1：男,0：女 -参见Position枚举
     */
    @ExcelProperty(value = "性别")
    private String sex;

    /**
     * 手机号
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "手机号")
    private String mobileNo;

    /**
     * 职位，参见Position枚举
     */
    @ExcelProperty(value = "职位")
    private String position;

    /**
     * 邮箱
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "邮箱")
    private String email;

    /**
     * 登录凭证
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "登录凭证")
    private String loginToken;

    /**
     * 是否首次登录，参见YesOrNo枚举
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "是否首次登录")
    private String isFirstLogin;

    /**
     * 头像地址
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "头像地址")
    private String logoUrl;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 创建者
     */
    @ExcelProperty(value = "创建者")
    private String createBy;

    /**
     * 更新者
     */
    @ExcelProperty(value = "更新者")
    private String updateBy;

    /**
     * 日期
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "日期")
    private String taskDate;

    /**
     * 时间
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "时间")
    private String taskTime;

    /**
     * 年月日时分秒
     */
    @ColumnWidth(20)
    @ExcelProperty(value = "年月日时分秒")
    private String taskDateTime;

    @Override
    public List<String> listFieldNames() {
        Class<? extends TaskUserDemoExcelDTO> aClass = this.getClass();
        Field[] declaredFields = aClass.getDeclaredFields();
        ArrayList<String> list = new ArrayList<>();
        for (Field declaredField : declaredFields) {
            list.add(declaredField.getName());
        }
        return list;
    }

}
